import { createApp } from "./app";

export default async (context) => {
  const { app, router, store } = createApp();

  const meta = app.$meta();
  // 设置服务端router位置
  router.push(context.url);

  // 设置meta信息
  context.meta = meta;

  // 等待router可能存在异步组件和钩子函数解析完
  await new Promise(router.onReady.bind(router));

  context.rendered = () => {
    // rendered会把context.state数据对象内联到页面模板中
    // 最终发送给客户端的页面中会包含一段脚本：window.__INITIAL_STATE__=context.state
    // 客户端就要把页面中的window.__INITIAL_STATE__填充到客服端store容器中
    context.state = store.state;
  };

  return app;
};

// export default context => {
//   return new Promise((resolve, reject) => {
//     const { app, router } = createApp()
//     router.push(context.url)

//     router.onReady(() => {
//       const matchedComponents = router.getMatchedComponents()
//       if (!matchedComponents.length) {
//         return reject({ code: 404 })
//       }
//       resolve(app)
//     }, reject)
//   })
// }
